n = int(input())
a = [True] * (n + 1)
i = 2
while i * i <= n:
    if a[i]:
        # 这个是我找出的比较快的初始化素数的办法了！不到1秒！！！
        j = (n - (i * i)) // i + 1
        a[i * i::i] = [False] * j
    i += 1
# 但是把他们存入列表仍需要将近1秒。。。
p = []
for i in range(2, n + 1):
    if a[i]: p.append(i)
m, l = n // 2, len(p)
s, k = 0, l - 1
# i 从前往后遍历， j 从后往前遍历
for i in range(l):
    if p[i] > m: break
    for j in range(k, -1, -1):
        sm = p[i] + p[j]
        if sm == n: s += 1
        elif sm < n:
            k = j
            break
print(s)
# 还是有一点超时。。把时限改成2秒好了！
'''
# 真的很艰难啊，肯定会超时吧，唉。
MAXN = 8000000
a = [True] * (MAXN + 1)
i = 2
while i * i <= MAXN:
    if a[i]:
        # 这个是我找出的比较快的初始化素数的办法了！不到1秒！！！
        j = (MAXN - (i * i)) // i + 1
        a[i * i::i] = [False] * j
    i += 1
# 但是把他们存入列表仍需要将近1秒。。。
p = []
for i in range(2, MAXN + 1):
    if a[i]: p.append(i)

from random import randint as r
nn = [(10, 100), (500, 5000), (10000, 50000), (500000,1000000), (7000000, 8000000)]
for ww in range(len(nn)):
    n = nn[ww]
    n_ = r(*n)
    while n_ % 2: n_ = r(*n)
    n = n_
    print(n)
    s_i, s_o = f'{n}\n', ''
    m, l = n // 2, len(p)
    s, k = 0, l - 1
    # i 从前往后遍历， j 从后往前遍历
    for i in range(l):
        if p[i] > m: break
        for j in range(k, -1, -1):
            sm = p[i] + p[j]
            if sm == n: s += 1
            elif sm < n:
                k = j
                break
    s_o += f"{s}"
    print(s)
    with open(f'{ww + 1}.in', 'w') as f:
        f.write(s_i)
    with open(f'{ww + 1}.out', 'w') as f:
        f.write(s_o)
'''
# -------------------------------------------------------------------------------

# 比赛环境为python3.8.6版本自带的IDLE，最好早点熟悉一下。。这个东西的提示时有时无

# 菜单栏最右边的Help的Python Docs 比赛时候也可以看，不过建议还是提前多了解了解，

# 比赛的时候至少知道在文档找什么能用的上。

# IDLE是下载Python时自带的，在按住win+s搜索IDLE就能搜到了。

# 然后点左上角的File可以创建新文件，然后按F5可以运行。
